import Crypt from "../../../utils/Crypt";
import PayModel from "../../../models/Pay";

const payModel = new PayModel()

Page({
  data: {
    amount: 0,
    sn: '',
    user_id: 0,
    third_pay: false
  },
  onShow: function () {
    // 汇聚支付
    const { referrerInfo } = wx.getEnterOptionsSync();
    console.log(referrerInfo, "==在 referrerInfo 中可获取交易小程序返回过来的参数==");
    if (referrerInfo && referrerInfo.extraData) {
      if (referrerInfo.extraData.status == 0) {
        wx.showToast({
          title: '支付失败',
          success: () => {
            setTimeout(() => {
              wx.switchTab({url: '/pages/home/index'})
            }, 1000)
          }
        })
      }
      if (referrerInfo.extraData.status == 1) {
        console.log(referrerInfo.extraData.trxNo)
        // 如果需要回调给汇聚, 这里再请求下api
        payModel.thirdMini({ sn: referrerInfo.extraData.trxNo }).then(() => {
          wx.showToast({
            title: '支付成功',
            success: () => {
              setTimeout(() => {
                wx.switchTab({url: '/pages/center/index'})
              }, 1000)
            }
          })
        })
      }
    }
  },
  onLoad: function (options) {
    let serial = options.serial
    serial = JSON.parse(serial)

    if (serial && serial.order_id) {
      payModel.getPayAmount({ order_id: serial.order_id }).then(response => {
        let { data } = response
        data = Crypt.parse(data)
        this.setData({ amount: data.amount, sn: data.sn, user_id: data.user_id, third_pay: data.third_pay })

        // console.log(this.data.third_pay)

        if (this.data.third_pay) {
          this.payThird()
        } else {
          this.pay()
        }

        /*
          关于支付的代码:
            天物小程序是 第三方
            3000旅游那个是 小程序原生支付

            j2 是H5 支付
              注意 api 中 timeStamp 这个参数不能多传

            3000 是 小程序原生支付
              // 神奇的小程序支付, 这里的类型必须 是string
              前端:
                timeStamp: data.timestamp + '',
         */
      })
    }
  },

  payThird() {
    const data = this.data
    payModel.payPrepare({
      sn: data.sn,
      amount: data.amount,
      body: '购买商品',
      pay_type: 1,
      pay_type_text: '订单',
      user_id: data.user_id,
      // signature_url: ''
    }).then(data => {
      // console.log(data)
      let { amount, result } = data
      // result = result.rc_Result
      // 现在不直接支付了,
      // 跳转到汇聚的小程序, 再支付
      wx.navigateToMiniProgram({
        appId: result.rc_Result.tradeAppid, // 交易小程序的 APPID（申请为商户配置）
        path: "/pages/payIndex/payIndex",
        // 传参
        extraData: {
          // trx_no: result.r2_OrderNo, // 交易流水号，必填
          trx_no: result.r7_TrxNo, // 交易流水号，必填
          order_amount: amount, // 交易金额，必填
        },
        envVersion: "release",
        success(res) {
        // 打开成功
          console.log("跳转小程序成功！", res);
        },
      });
      // wx.requestPayment({
      //   timeStamp: result.timeStamp,
      //   nonceStr: result.nonceStr,
      //   package: result.package,
      //   paySign: result.paySign,
      //   signType: result.signType,
      //   success: () => {
      //     // 调用接口成功
      //     wx.showToast({
      //       title: '支付成功',
      //       success: () => {
      //         setTimeout(() => {
      //           wx.switchTab({url: '/pages/center/index'})
      //         }, 1000)
      //       }
      //     })
      //   },
      //   fail: () => {
      //     // 调用接口失败
      //     // wx.showToast({
      //     //   title: '支付失败',
      //     //   icon: 'error',
      //     //   success: () => {
      //     //     setTimeout(() => {
      //     //       wx.switchTab({url: '/pages/home/index'})
      //     //     }, 1000)
      //     //   }
      //     // })
      //   }
      // })
    })
  },

  pay() {
    const data = this.data
    payModel.payPrepareWx({
      sn: data.sn,
      amount: data.amount,
      body: '购买商品',
      pay_type: 1,
      pay_type_text: '订单',
      user_id: data.user_id,
      // signature_url: ''
    }).then(result => {
      const data = result
      console.log(data)
      // result = result.rc_Result
      wx.requestPayment({
        // timeStamp: result.timeStamp,
        // nonceStr: result.nonceStr,
        // package: result.package,
        // paySign: result.paySign,
        // signType: result.signType,
        // 神奇的小程序支付, 这里的类型必须 是string
        timeStamp: data.timestamp + '',
        nonceStr: data.nonceStr,
        package: data.package,
        paySign: data.sign,
        signType: 'MD5',
        success: () => {
          // 调用接口成功
          wx.showToast({
            title: '支付成功',
            success: () => {
              setTimeout(() => {
                wx.switchTab({url: '/pages/center/index'})
              }, 1000)
            }
          })
        },
        fail: () => {
          // 调用接口失败
          // wx.showToast({
          //   title: '支付失败',
          //   icon: 'error',
          //   success: () => {
          //     setTimeout(() => {
          //       wx.switchTab({url: '/pages/home/index'})
          //     }, 1000)
          //   }
          // })
        }
      })
    })
  }
});
